home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import sys
- import urllib
- import gettext
- import re
- import rb
- from xml.dom import minidom
-
- def detect_charset(s):
- charsets = ('iso-8859-1', 'gbk', 'utf-8')
- for charset in charsets:
-
- try:
- return unicode(unicode(s, 'utf-8').encode(charset), 'gbk')
- continue
- continue
- continue
-
-
- return s
-
-
- class WinampcnParser(object):
-
- def __init__(self, artist, title):
- self.artist = artist
- self.title = title
-
-
- def search(self, callback, *data):
- title_encode = urllib.quote(detect_charset(self.title).encode('gbk').replace(' ', ''))
- artist_encode = urllib.quote(detect_charset(self.artist).encode('gbk').replace(' ', ''))
- url = 'http://www.winampcn.com/lyrictransfer/get.aspx?song=%s&artist=%s&lsong=%s&Datetime=20060601' % (title_encode, artist_encode, title_encode)
- loader = rb.Loader()
- loader.get_url(url, self.got_lyrics, callback, *data)
-
-
- def got_lyrics(self, xmltext, callback, *data):
- if xmltext is None:
- callback(None, *data)
- return None
-
- try:
- xmltext = xmltext.decode('gbk').encode('UTF-8')
- xmltext = xmltext.replace('encoding="gb2312"', 'encoding="UTF-8"')
- xmldoc = minidom.parseString(xmltext)
- root = xmldoc.documentElement
- lrcurl = root.getElementsByTagName('LyricUrl')[0].childNodes[0].data
- if lrcurl is None:
- callback(xmltext, *data)
- return None
- lrcurl_encode = urllib.quote(detect_charset(lrcurl).encode('gbk'))
- lrcurl_encode = lrcurl_encode.replace('%3A', ':')
- loader = rb.Loader()
- loader.get_url(lrcurl_encode, self.parse_lyrics, callback, *data)
- except:
- xmltext is None
- callback(None, *data)
-
-
-
- def parse_lyrics(self, lyrics, callback, *data):
- if lyrics is None:
- callback(None, *data)
- return None
- lrcplaintext = lyrics
-
- try:
- lrcplaintext = re.sub('\\[.*?\\]', '', lrcplaintext)
- lrcplaintext = lrcplaintext.decode('gbk').encode('UTF-8')
- except:
- lyrics is None
- callback(lrcplaintext, *data)
- return None
-
- lrcplaintext += '\n\nLyrics provided by winampcn.com'
- callback(lrcplaintext, *data)
-
-
-